<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="description"
        content="FlexPainter: Flexible and Multi-View Consistent Texture Generation">
  <meta name="keywords" content="Texture generation, 3D generation, multi-view generation, mesh, texture">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>FlexPainter: Flexible and Multi-View Consistent Texture Generation</title> 

  <link href="https://fonts.googleapis.com/css?family=Google+Sans|Noto+Sans|Castoro"
        rel="stylesheet">

  <link rel="stylesheet" href="./static/css/bulma.min.css">
  <link rel="stylesheet" href="./static/css/bulma-carousel.min.css">
  <link rel="stylesheet" href="./static/css/bulma-slider.min.css">
  <link rel="stylesheet" href="./static/css/fontawesome.all.min.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/jpswalsh/academicons@1/css/academicons.min.css">
  <link rel="stylesheet" href="./static/css/index.css">
  <link rel="icon" href="./static/images/icon.ico">

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
  <script defer src="./static/js/fontawesome.all.min.js"></script>
  <script src="./static/js/bulma-carousel.min.js"></script>
  <script src="./static/js/bulma-slider.min.js"></script>
  <script src="./static/js/index.js"></script>

  <style>
    .grid-container {
      display: grid;
      grid-template-columns: auto auto auto auto auto auto;
      gap: 10px;
      padding: 0;
    }
    
    .grid-container > div {
      text-align: center;
      padding: 0;
      font-size: 30px;
    }

    .item1 {
      grid-column: 1 / 3;
    }
    .item2 {
      grid-column: 3 / 5;
    }
    .item3 {
      grid-column: 5 / 7;
    }
  </style>
</head>
<body>

<section class="hero">
  <div class="hero-body">
    <div class="container is-max-desktop">
      <div class="columns is-centered">
        <div class="column has-text-centered">
          <h1 class="title is-1 publication-title">FlexPainter: Flexible and Multi-View Consistent Texture Generation</h1>
          <div class="is-size-5 publication-authors">
            <span class="author-block">
              <a href="http://me.starydy.xyz/">Dongyu Yan</a><sup>1,*</sup>,</span>
            <span class="author-block">
              <a href="https://yuevii.github.io/">Leyi Wu</a><sup>1,*</sup>,</span>
            <span class="author-block">
              <a href="https://ltt-o.github.io/JiantaoLin.github.io/">Jiantao Lin</a><sup>1</sup>,
            </span>
            <span class="author-block">
              <a href="https://wileewang.github.io/">Luozhou Wang</a><sup>1</sup>,
            </span>
            <span class="author-block">
              <a href="https://scholar.google.com/citations?user=I6_dXvEAAAAJ&hl=zh-CN">Tianshuo Xu</a><sup>1</sup>,
            </span>
            <span class="author-block">
              <a href="https://zhifeichen097.github.io/">Zhifei Chen</a><sup>1</sup>,
            </span>
            <span class="author-block">
              <a href="https://scholar.google.com/citations?user=Vm1moSIAAAAJ&hl=zh-CN">Zhen Yang</a><sup>1</sup>,
            </span>
            <span class="author-block">
            Lie Xu</a><sup>3</sup>
            </span>
            <span class="author-block">
            Shunsi Zhang</a><sup>3</sup>,
            </span>
            <span class="author-block">
              <a href="https://www.yingcong.me/">Ying-Cong Chen</a><sup>1,2,&dagger;</sup>,
            </span>
          </div>
          <style>
            .author-block {
              margin-right: 10px;
            }
          </style>
          <div class="is-size-5 publication-authors">
            <span class="author-block"><sup>1</sup>HKUST(GZ),</span>
            <span class="author-block"><sup>2</sup>HKUST</span>
            <span class="author-block"><sup>3</sup>Guangzhou Quwan Network Technology</span>
          </div>
          <p class="author-notes">
            <span>* Equal contribution</span>
            <span>&dagger; Corresponding author</span>
          </p>

          <div class="column has-text-centered">
            <div class="publication-links">
              <!-- PDF Link. -->
              <span class="link-block">
                <a href="https://arxiv.org/pdf/2506.02620"
                   class="external-link button is-normal is-rounded is-dark">
                  <span class="icon">
                      <i class="fas fa-file-pdf"></i>
                  </span>
                  <span>Paper</span>
                </a>
              </span>
              <span class="link-block">
                <a href="https://arxiv.org/abs/2506.02620"
                   class="external-link button is-normal is-rounded is-dark">
                  <span class="icon">
                      <i class="ai ai-arxiv"></i>
                  </span>
                  <span>arXiv</span>
                </a>
              </span>
              <!-- Video Link. -->
              <span class="link-block">
                <a href="https://www.youtube.com/watch?v=AudeQdTifWY"
                   class="external-link button is-normal is-rounded is-dark">
                  <span class="icon">
                      <i class="fab fa-youtube"></i>
                  </span>
                  <span>Video</span>
                </a>
              </span>
              <!-- Code Link. -->
              <span class="link-block">
                <a href="https://github.com/StarRealMan/FlexPainter"
                   class="external-link button is-normal is-rounded is-dark">
                  <span class="icon">
                      <i class="fab fa-github"></i>
                  </span>
                  <span>Code</span>
                  </a>
              </span>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</section>

<section class="hero teaser">
  <div class="container is-max-desktop">
    <div class="hero-body">
        <img src="./static/images/teaser-1.png" alt="Teaser Image" style="width: 100%;">
      <h2 class="subtitle has-text-centered">
        <strong>FlexPainter</strong></span> generates diverse, high-quality textures based on various flexible user prompts.
      </h2>
    </div>
  </div>
</section>

<section class="section">
  <div class="container is-max-desktop">

    <!-- Paper video. -->
    <div class="columns is-centered has-text-centered">
      <div class="column is-four-fifths">
        <h2 class="title is-3">Video</h2>
        <div class="publication-video">
          <iframe src="https://www.youtube.com/embed/AudeQdTifWY?rel=0&amp;showinfo=0"
                  frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
        </div>
      </div>
    </div>
    <!--/ Paper video. -->

    <!-- Abstract. -->
    <div class="columns is-centered has-text-centered">
      <div class="column is-four-fifths">
        <h2 class="title is-3">Abstract</h2>
        <div class="content has-text-justified">
          <p>
            Texture map production is an important part of 3D modeling and determines the rendering quality.
            Recently, diffusion-based methods have opened a new way for texture generation.
            However, restricted control flexibility and limited prompt modalities may prevent creators from producing desired results.
            Furthermore, inconsistencies between generated multi-view images often lead to poor texture generation quality.
            To address these issues, we introduce <strong>FlexPainter</strong>, a novel texture generation pipeline that enables flexible multi-modal conditional guidance and achieves highly consistent texture generation.
            A shared conditional embedding space is constructed to perform flexible aggregation between different input modalities.
            Utilizing such embedding space, we present an image-based CFG method to decompose structural and style information, achieving reference image-based stylization.
            Leveraging the 3D knowledge within the image diffusion prior, we first generate multi-view images simultaneously using a grid representation to enhance global understanding.
            Meanwhile, we propose a view synchronization and adaptive weighting module during diffusion sampling to further ensure local consistency.
            Finally, a 3D-aware texture completion model combined with a texture enhancement model is used to generate seamless, high-resolution texture maps.
            Comprehensive experiments demonstrate that our framework significantly outperforms state-of-the-art methods in both flexibility and generation quality.
          </p>
        </div>
      </div>
    </div>
    <!--/ Abstract. -->

    <!-- Method. -->
    <div class="columns is-centered has-text-centered">
      <div class="column is-four-fifths">
        <h2 class="title is-3">Method</h2>
        <img src="./static/images/pipe-1.png" alt="Image 1" style="width: 1200px;">
        <div class="content has-text-justified">
          <p>
            Above is the pipeline of our method. We first generate multi-view images using the conditional input from the user.
            The top two cases show the generation of using text-only or image-only conditions.
            Leveraging the linear operation in Equ.(\ref{equ:lo}), we can also perform text-guided image refinement (shown in green) and stylization using reference image (shown in blue).
            The right side shows our view-synchronization and weighting module.
            Consistent multi-view images can be generated by reprojection and weighting during each sampling step.
          </p>
        </div>
      </div>
    </div>
    <!--/ Method. -->

  <div class="columns is-centered has-text-centered">
    <div class="column is-four-fifths">
        <h2 class="title is-3">Results</h2>
        <img src="./static/images/text-1.png" alt="Image 1" style="width: 1200px;">
        <div class="content has-text-centered">
            <p>
                Text-to-texture generation
            </p>
        </div>
        <img src="./static/images/image-to-texture-1.png" alt="Image 1" style="width: 1200px;">
        <div class="content has-text-centered">
            <p>
                Image-to-texture generation
            </p>
        </div>
        <img src="./static/images/app-1.png" alt="Image 1" style="width: 1200px;">
        <div class="content has-text-centered">
            <p>
                Our applications
            </p>
        </div>
    </div>
  </div>

    <div class="container is-centered has-text-centered">
      <h2 class="title is-3">Video Gallery</h2>
    </div>
    <br>
    <div class="columns is-centered" style="flex-direction: row; gap: 10px; flex-wrap: wrap;">
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/1.mp4" type="video/mp4">
          </video>
        </div>
      </div>
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/2.mp4" type="video/mp4">
          </video>
        </div>
      </div>
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/3.mp4" type="video/mp4">
          </video>
        </div>
      </div>
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/4.mp4" type="video/mp4">
          </video>
        </div>
      </div>
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/5.mp4" type="video/mp4">
          </video>
        </div>
      </div>
    </div>
    <div class="columns is-centered" style="flex-direction: row; gap: 10px; flex-wrap: wrap;">
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/6.mp4" type="video/mp4">
          </video>
        </div>
      </div>
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/7.mp4" type="video/mp4">
          </video>
        </div>
      </div>
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/8.mp4" type="video/mp4">
          </video>
        </div>
      </div>
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/9.mp4" type="video/mp4">
          </video>
        </div>
      </div>
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/10.mp4" type="video/mp4">
          </video>
        </div>
      </div>
    </div>
    <div class="columns is-centered" style="flex-direction: row; gap: 10px; flex-wrap: wrap;">
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/11.mp4" type="video/mp4">
          </video>
        </div>
      </div>
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/12.mp4" type="video/mp4">
          </video>
        </div>
      </div>
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/13.mp4" type="video/mp4">
          </video>
        </div>
      </div>
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/14.mp4" type="video/mp4">
          </video>
        </div>
      </div>
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/15.mp4" type="video/mp4">
          </video>
        </div>
      </div>
    </div>
    <div class="columns is-centered" style="flex-direction: row; gap: 10px; flex-wrap: wrap;">
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/16.mp4" type="video/mp4">
          </video>
        </div>
      </div>
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/17.mp4" type="video/mp4">
          </video>
        </div>
      </div>
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/18.mp4" type="video/mp4">
          </video>
        </div>
      </div>
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/19.mp4" type="video/mp4">
          </video>
        </div>
      </div>
      <div class="column" style="flex: 1; max-width: 20%;">
        <div class="content" style="text-align: center;">
          <video controls style="width: 100%;">
            <source src="./static/video/20.mp4" type="video/mp4">
          </video>
        </div>
      </div>
    </div>
  </div>
</section>

<section class="section" id="BibTeX">
  <div class="container is-max-desktop content">
    <h2 class="title">BibTeX</h2>
    <pre><code>
@article{yan2024flexipainter,
  title={FlexPainter: Flexible and Multi-View Consistent Texture Generation},
  author={Dongyu Yan, Leyi Wu, Jiantao Lin, Luozhou Wang, Tianshuo Xu, Zhifei Chen, Zhen Yang, Lie Xu, Shunsi Zhang, Yingcong Chen},
  journal={arXiv preprint arXiv:2506.02620},
  year={2025}
}
    </code></pre>
  </div>
</section>

<footer class="footer">
  <div class="container">
    <div class="content has-text-centered">
      <a class="icon-link"
         href="https://arxiv.org/pdf/2302.14363">
        <i class="fas fa-file-pdf"></i>
      </a>
      <a class="icon-link" href="https://github.com/StarRealMan" class="external-link" disabled>
        <i class="fab fa-github"></i>
      </a>
    </div>
    <div class="columns is-centered">
      <div class="column is-8">
        <div class="content">
          <p>
            This website is licensed under a <a rel="license"
                                                href="http://creativecommons.org/licenses/by-sa/4.0/">Creative
            Commons Attribution-ShareAlike 4.0 International License</a>.
          </p>
          <p>
            We really appreciate  <a
            href="https://nerfies.github.io/">Nerfies</a>
            for providing the <a
            href="https://github.com/nerfies/nerfies.github.io">source code</a> of the website template.
          </p>
        </div>
      </div>
    </div>
  </div>
</footer>

</body>
</html>